// 解法1，
// 这道题如果用二分查找法，关键是要知道如何判断得到的mid是否是满足条件
// 根据题目中的要求，是求x的平方根的向下取整，要知道满足条件的mid，必然要是mid*mid<=x的。
// 如果mid*mid 大于了 x，那么mid可能不是答案

// 如果题目是要求x的平方根的向上取整的话，该怎么办？ 

function mySqrt(x: number): number {
    if(x===0 || x===1){
        return x;
    }
    let left:number = 1;
    let right:number = x;
    let result:number = -1;
    while(left<=right){
        let mid:number = Math.floor((left+right)/2);
        if(mid * mid <= x){
            result = mid;
            left = mid+1;
        }else{
            right = mid -1;
        }
    }
    return result;
};

// 牛顿迭代法
function mySqrt2(x: number): number {
    if(x===0 || x===1){
        return x;
    }
    let x0:number = x;
    while(x0*x0 >x){
        x0 = Math.floor((x0 + x/x0)/2)
    }
    return x0
};



























